﻿
using AppLimit.CloudComputing.SharpBox.StorageProvider.DropBox;
using System.Configuration;
using System;
using System.Windows.Forms;
using AppLimit.CloudComputing.SharpBox;
using DataStorage;
namespace Booky.WinFormsClient
{
    //partial class MainForm
    //{
    //    private void InitializeLoginComponents()
    //    {
    //        _UsedConfig = DropBoxConfiguration.GetStandardConfiguration();
    //        webBrowser.DocumentTitleChanged += new EventHandler(webBrowser_DocumentTitleChanged);

    //        string appKey = AppKey;
    //        string appSecret = AppSecret;

    //        if (String.IsNullOrEmpty(appKey) || String.IsNullOrEmpty(appSecret))
    //        {
    //            MessageBox.Show("Application Key & Secret can't be empty.");
    //            return;
    //        }

    //        //// check that token file exists and ask to enter its name if not
    //        //if (String.IsNullOrEmpty(edtOutput.Text) && !AskFileName(false))
    //        //{
    //        //    return;
    //        //}

    //        // 0. reset token
    //        _GeneratedToken = null;

    //        // 1. modify dropbox configuration            
    //        _UsedConfig.APIVersion = DropBoxAPIVersion.V1;

    //        // 2. get the request token
    //        _CurrentRequestToken = DropBoxStorageProviderTools.GetDropBoxRequestToken(_UsedConfig, appKey, appSecret);

    //        if (_CurrentRequestToken == null)
    //        {
    //            MessageBox.Show("Can't get request token. Check Application Key & Secret values.");
    //            return;
    //        }

    //        // 3. get the authorization url 
    //        String AuthUrl = DropBoxStorageProviderTools.GetDropBoxAuthorizationUrl(_UsedConfig, _CurrentRequestToken);

    //        // 4. navigate to the AuthUrl 
    //        webBrowser.Navigate(AuthUrl);

    //        //NavigateToLoginPage();
            
    //    }

    //    private void NavigateToLoginPage()
    //    {
    //        _UsedConfig = DropBoxConfiguration.GetStandardConfiguration();
    //        webBrowser.DocumentTitleChanged += new EventHandler(webBrowser_DocumentTitleChanged);

    //        string appKey = AppKey;
    //        string appSecret = AppSecret;

    //        if (String.IsNullOrEmpty(appKey) || String.IsNullOrEmpty(appSecret))
    //        {
    //            MessageBox.Show("Application Key & Secret can't be empty.");
    //            return;
    //        }

    //        //// check that token file exists and ask to enter its name if not
    //        //if (String.IsNullOrEmpty(edtOutput.Text) && !AskFileName(false))
    //        //{
    //        //    return;
    //        //}

    //        // 0. reset token
    //        _GeneratedToken = null;

    //        // 1. modify dropbox configuration            
    //        _UsedConfig.APIVersion = DropBoxAPIVersion.V1;

    //        // 2. get the request token
    //        _CurrentRequestToken = DropBoxStorageProviderTools.GetDropBoxRequestToken(_UsedConfig, appKey, appSecret);

    //        if (_CurrentRequestToken == null)
    //        {
    //            MessageBox.Show("Can't get request token. Check Application Key & Secret values.");
    //            return;
    //        }

    //        // 3. get the authorization url 
    //        String AuthUrl = DropBoxStorageProviderTools.GetDropBoxAuthorizationUrl(_UsedConfig, _CurrentRequestToken);
          
    //        // 4. navigate to the AuthUrl 
    //        webBrowser.Navigate(AuthUrl);
    //    }


    //    private string AppKey
    //    {
    //        get
    //        {
    //            return ConfigurationManager.AppSettings["AppKey"].ToString();
    //        }
    //    }

    //    private string AppSecret
    //    {
    //        get
    //        {
    //            return ConfigurationManager.AppSettings["AppSecret"].ToString();
    //        }
    //    }
        
    //    private void button3_Click(object sender, EventArgs e)
    //    {
    //        string appKey = AppKey;
    //        string appSecret = AppSecret;

    //        if (String.IsNullOrEmpty(appKey) || String.IsNullOrEmpty(appSecret))
    //        {
    //            MessageBox.Show("Application Key & Secret can't be empty.");
    //            return;
    //        }

    //        //// check that token file exists and ask to enter its name if not
    //        //if (String.IsNullOrEmpty(edtOutput.Text) && !AskFileName(false))
    //        //{
    //        //    return;
    //        //}

    //        // 0. reset token
    //        _GeneratedToken = null;

    //        // 1. modify dropbox configuration            
    //        _UsedConfig.APIVersion = DropBoxAPIVersion.V1;

    //        // 2. get the request token
    //        _CurrentRequestToken = DropBoxStorageProviderTools.GetDropBoxRequestToken(_UsedConfig, appKey, appSecret);

    //        if (_CurrentRequestToken == null)
    //        {
    //            MessageBox.Show("Can't get request token. Check Application Key & Secret values.");
    //            return;
    //        }

    //        // 3. get the authorization url 
    //        String AuthUrl = DropBoxStorageProviderTools.GetDropBoxAuthorizationUrl(_UsedConfig, _CurrentRequestToken);

    //        // 4. navigate to the AuthUrl 
    //        webBrowser.Navigate(AuthUrl);
    //    }

    //    /// <summary>
    //    /// finishes the token exchange process
    //    /// </summary>
    //    /// <param name="sender"></param>
    //    /// <param name="e"></param>
    //    void webBrowser_DocumentTitleChanged(object sender, EventArgs e)
    //    {
    //        if (_GeneratedToken == null && webBrowser.Url.ToString().StartsWith(_UsedConfig.AuthorizationCallBack.ToString()))
    //        {
    //            // 5. try to get the real token
    //            _GeneratedToken = DropBoxStorageProviderTools.ExchangeDropBoxRequestTokenIntoAccessToken(_UsedConfig, AppKey, AppSecret, _CurrentRequestToken);

    //            // 6. store the real token to file
    //            CloudStorage cs = new CloudStorage();
    //            cs.SerializeSecurityTokenEx(_GeneratedToken, _UsedConfig.GetType(), null, Globals.SecurityTokenName);

    //            //getAnswer.TryInvokeAsync("");

    //            // 7. show message box
    //            //MessageBox.Show("Done Auth");
    //            OnAfterAuthenticate();
    //        }
    //    }

    //    private string OnAfterAuthenticateTask(string question, Func<bool> isCancelled, Action<int> reportProgress)
    //    {
    //        //for (int i = 0; i < 100; i++)
    //        //{
    //        if (isCancelled())
    //            return null;

    //        //r.SigninBooky();

    //        //    //reportProgress(i);
    //        //    //System.Threading.Thread.Sleep(50);
    //        //}
    //        return "42";
    //    }

    //    private void OnAfterAuthenticate()//Func<bool> isCancelled, Action<int> reportProgress
    //    {
    //        onAfterAuthenticateTask.TryInvokeAsync("asdf");
            

    //        //pLogin.Visible = false;
            
    //        //pAuthenticated.Visible = true;
            
    //        //this.toolStripMenuItemLogout.Visible = true;
            
    //        //this.toolStripMenuItemAddBookmark.Visible = true;

    //        //ConfigureBookmarksListView();
            
    //        //this.splitContainer1.Visible = true;
            
    //        //this.splitContainer2.Visible = true;
            
    //        //pBookmarkDetailView.Visible = true;
            
    //        //BindBookmarkData();
    //    }

    //    void OnAfterAuthenticateTask_Completed(object sender, AsyncFuncCompletedEventArgs<string> e)
    //    {
    //        if (e.Error != null)
    //        {
    //            // Report exception
    //        }
    //        else if (e.Cancelled)
    //        {
    //            // Ignore
    //            MessageBox.Show("Operation cancelled");
    //        }
    //        else
    //        {
    //            //set the gui, etc. 
    //            ConfigureBookmarkView();
    //        }

    //        //progressBar1.Value = 0;
    //    }

    //    private DropBoxConfiguration _UsedConfig = null;
    //    private DropBoxRequestToken _CurrentRequestToken = null;
    //    private ICloudStorageAccessToken _GeneratedToken = null;
    //}
}
